package app.mybatis;

import org.apache.ibatis.annotations.*;

import java.sql.SQLException;

/**
 * MyBatis 注解模式：
 * 优点：
 * 快速完成查询功能
 * 缺点：
 * CUD都需要编写SQL代码
 * 【致命】接口注解实现的N个方法中，出现了一个不能单纯依靠Sql完成时（如需要根据输入条件动态组合sql等），需要改造成【实现类】的方式完成！
 */
@Mapper
public interface CityAnnotationDao {

  @Select("select * from city where state = #{state}")
  City findByState(@Param("state") String state);

  @Insert("insert into city values (#{id,jdbcType=INTEGER},#{name,jdbcType=VARCHAR}, #{state,jdbcType=VARCHAR},#{country,jdbcType=VARCHAR})")
  int insertIntoByAnnotation(City city) throws SQLException;

  @Update("update city set name=#{name} where state=#{state}")
  int updateNameByState(@Param("name") String name, @Param("state") String state)throws SQLException;

  @Delete("delete from city where name like #{name}")
  int deleteByNames(@Param("name")String name) throws SQLException;
}